//哈希表 - 判定是否互为字符重排
//法一: 两个哈希表
class Solution {
public:
    bool CheckPermutation(string s1, string s2) {
        int hash1[26], hash2[26];
        for(auto x : s1) hash1[x - 'a']++; 
        for(auto x : s2) hash2[x - 'a']++;
        for(int i = 0; i < 26; i++)
            if(hash1[i] != hash2[i])
                return false;
        return true; 
    }
};

//法二: 一个哈希表
class Solution {
public:
    bool CheckPermutation(string s1, string s2) {
        if(s1.size() != s2.size()) return false;
        int hash[26];
        for(auto x : s1) hash[x - 'a']++;
        for(auto x : s2)
        {
            hash[x - 'a']--;
            if(hash[x - 'a'] < 0) return false;
        }
        return true;
    }
};
